// This file is Copyright its original authors, visible in version control
// history.
//
// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE
// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// You may not use this file except in accordance with one or both of these
// licenses.

use core::time::Duration;

// On startup, we wait a bit before attempting the initial forward, which gives the user some time
// to re-connect peers.
const INIT_FWD_DELAY: Duration = Duration::from_secs(2);

pub(crate) struct BatchDelay {
	next_batch_delay: Duration,
}

impl BatchDelay {
	pub(crate) fn new() -> Self {
		let next_batch_delay = INIT_FWD_DELAY;
		Self { next_batch_delay }
	}

	pub(crate) fn get(&self) -> Duration {
		self.next_batch_delay
	}

	pub(crate) fn next(&mut self) -> Duration {
		let next = rand_batch_delay();
		self.next_batch_delay = next;
		next
	}
}

fn rand_batch_delay() -> Duration {
	let delay_millis = rand_delay_millis();
	let delay_micros = rand_delay_micros();
	Duration::from_millis(delay_millis) + Duration::from_micros(delay_micros)
}

fn rand_delay_millis() -> u64 {
	// We draw milliseconds from the log-normal FWD_DELAYS_MILLIS below.
	const USIZE_LEN: usize = core::mem::size_of::<usize>();
	let mut random_bytes = [0u8; USIZE_LEN];
	possiblyrandom::getpossiblyrandom(&mut random_bytes);

	let index = usize::from_be_bytes(random_bytes) % FWD_DELAYS_MILLIS.len();
	FWD_DELAYS_MILLIS[index] as u64
}

fn rand_delay_micros() -> u64 {
	// We draw microseconds uniformly in [0; 1000).
	let mut random_bytes = [0u8; 2];
	possiblyrandom::getpossiblyrandom(&mut random_bytes);
	let micros = u16::from_be_bytes(random_bytes) % 1000;
	micros as u64
}

// An array of potential forwarding delays (log-normal distribution, 10000 samples, mean = 50, sd = 0.5), generated via the following R-script:
// ```
// set.seed(10)
// n <- 10000
// meanlog <- log(50)
// sdlog <- 0.5
// min = 0
// max = 200
// log_normal_data <- round(rlnorm(n, meanlog = meanlog, sdlog = sdlog))
// log_normal_data <- log_normal_data[log_normal_data >= min & log_normal_data <= max]
// cat(log_normal_data, file = "log_normal_data.txt", sep = ", ")
// ```
static FWD_DELAYS_MILLIS: [u16; 9969] = [
	50, 46, 25, 37, 58, 61, 27, 42, 22, 44, 87, 73, 44, 82, 72, 52, 31, 45, 79, 64, 37, 17, 36, 17,
	27, 41, 35, 32, 48, 44, 20, 48, 81, 55, 25, 24, 60, 21, 43, 36, 86, 34, 33, 76, 31, 49, 56, 43,
	36, 69, 41, 42, 99, 146, 64, 74, 32, 65, 36, 58, 27, 40, 33, 59, 85, 92, 72, 39, 66, 27, 60,
	24, 30, 45, 24, 90, 24, 40, 30, 107, 67, 45, 71, 72, 62, 54, 70, 152, 28, 48, 41, 45, 52, 89,
	67, 25, 22, 78, 54, 92, 34, 62, 30, 71, 36, 66, 70, 22, 84, 88, 26, 88, 40, 43, 79, 52, 84, 72,
	94, 80, 39, 55, 49, 28, 68, 32, 57, 29, 42, 27, 102, 69, 18, 36, 40, 31, 64, 72, 70, 81, 22,
	27, 19, 104, 60, 85, 65, 53, 98, 52, 41, 44, 89, 32, 32, 16, 68, 89, 27, 23, 69, 38, 65, 35,
	40, 36, 81, 24, 55, 24, 28, 41, 54, 85, 38, 95, 56, 43, 81, 66, 62, 69, 25, 45, 68, 141, 43,
	58, 71, 51, 53, 82, 36, 26, 24, 43, 21, 25, 29, 29, 92, 59, 100, 77, 29, 64, 85, 26, 45, 26,
	54, 94, 40, 20, 60, 25, 71, 41, 40, 30, 42, 43, 62, 43, 49, 72, 52, 113, 66, 97, 43, 27, 44,
	50, 60, 74, 33, 17, 28, 26, 112, 73, 77, 61, 64, 47, 52, 42, 42, 84, 86, 80, 24, 32, 36, 85,
	35, 28, 29, 30, 61, 63, 16, 50, 82, 75, 53, 15, 51, 42, 44, 42, 39, 56, 169, 106, 35, 40, 70,
	158, 59, 52, 28, 90, 51, 27, 52, 44, 57, 100, 55, 67, 33, 61, 61, 85, 89, 30, 44, 95, 106, 67,
	36, 74, 53, 59, 40, 73, 25, 28, 65, 97, 165, 48, 45, 136, 108, 27, 188, 73, 85, 81, 76, 46, 41,
	58, 45, 40, 51, 51, 64, 69, 18, 35, 47, 42, 49, 52, 57, 66, 93, 58, 40, 68, 35, 112, 37, 61,
	144, 30, 32, 94, 22, 88, 147, 62, 91, 84, 69, 137, 86, 72, 25, 26, 31, 21, 76, 34, 147, 40, 50,
	61, 42, 40, 57, 152, 59, 38, 24, 62, 38, 42, 72, 38, 24, 30, 36, 37, 129, 46, 36, 41, 59, 28,
	52, 51, 79, 145, 37, 93, 48, 90, 149, 61, 35, 19, 19, 31, 91, 37, 47, 50, 40, 104, 148, 11, 21,
	42, 60, 27, 63, 93, 37, 73, 68, 45, 35, 92, 107, 98, 47, 80, 50, 76, 43, 49, 83, 25, 30, 49,
	108, 34, 83, 57, 48, 32, 63, 100, 51, 26, 89, 23, 14, 35, 43, 40, 42, 49, 78, 42, 35, 120, 48,
	87, 50, 24, 193, 34, 85, 49, 38, 19, 83, 43, 27, 93, 45, 79, 17, 95, 40, 44, 97, 76, 24, 37,
	53, 20, 22, 56, 79, 42, 95, 51, 17, 38, 86, 44, 32, 32, 77, 36, 55, 46, 74, 117, 93, 51, 115,
	88, 25, 54, 77, 49, 81, 88, 61, 60, 44, 64, 26, 47, 36, 70, 43, 68, 116, 15, 25, 91, 95, 49,
	35, 24, 95, 90, 77, 16, 25, 25, 29, 31, 37, 84, 63, 28, 74, 21, 37, 26, 43, 35, 13, 76, 58, 49,
	79, 45, 82, 19, 30, 78, 72, 45, 55, 102, 40, 60, 71, 80, 105, 89, 56, 26, 48, 82, 30, 34, 120,
	28, 41, 23, 43, 37, 70, 36, 38, 80, 47, 41, 46, 57, 56, 140, 26, 67, 122, 56, 78, 32, 49, 25,
	59, 100, 27, 45, 23, 65, 41, 21, 173, 64, 36, 32, 21, 68, 32, 72, 49, 47, 53, 36, 49, 38, 166,
	48, 33, 43, 53, 29, 72, 59, 42, 95, 30, 39, 46, 43, 138, 78, 54, 45, 33, 69, 42, 21, 57, 32,
	38, 32, 76, 34, 81, 193, 47, 47, 26, 62, 81, 44, 52, 42, 59, 57, 42, 85, 35, 51, 63, 42, 56,
	95, 22, 34, 65, 92, 58, 56, 63, 19, 93, 61, 49, 22, 63, 35, 101, 21, 55, 35, 33, 36, 119, 16,
	22, 69, 79, 73, 45, 35, 64, 68, 22, 42, 64, 21, 45, 41, 28, 63, 55, 27, 73, 37, 23, 30, 86, 79,
	34, 39, 28, 40, 33, 37, 34, 32, 49, 43, 11, 18, 49, 42, 45, 23, 32, 32, 66, 46, 42, 38, 42, 72,
	91, 90, 70, 90, 55, 64, 19, 62, 90, 24, 42, 37, 59, 87, 41, 167, 89, 59, 63, 43, 101, 41, 48,
	59, 90, 44, 78, 39, 35, 28, 38, 53, 97, 103, 57, 75, 35, 57, 33, 56, 35, 71, 40, 42, 65, 53,
	73, 43, 65, 48, 34, 23, 86, 16, 55, 73, 17, 65, 49, 28, 68, 35, 41, 36, 78, 78, 61, 31, 73, 64,
	49, 67, 73, 39, 35, 50, 75, 87, 43, 32, 57, 49, 45, 30, 54, 54, 31, 51, 74, 28, 130, 38, 78,
	54, 30, 76, 28, 63, 56, 38, 51, 69, 21, 67, 32, 69, 37, 48, 70, 25, 109, 33, 33, 83, 53, 56,
	25, 107, 51, 93, 58, 74, 87, 50, 46, 71, 65, 40, 61, 35, 57, 43, 49, 39, 47, 24, 94, 56, 58,
	86, 43, 49, 34, 142, 77, 82, 28, 23, 45, 54, 35, 117, 48, 35, 41, 150, 66, 83, 75, 96, 66, 47,
	39, 55, 54, 71, 53, 35, 41, 57, 43, 83, 89, 45, 43, 22, 66, 70, 104, 22, 96, 46, 110, 140, 95,
	62, 89, 64, 87, 66, 42, 54, 72, 108, 82, 31, 37, 95, 38, 49, 97, 57, 76, 44, 78, 56, 66, 90,
	43, 64, 108, 105, 56, 41, 18, 36, 51, 41, 128, 24, 72, 27, 43, 51, 60, 75, 67, 96, 37, 55, 37,
	34, 22, 35, 39, 35, 66, 37, 62, 70, 40, 34, 62, 33, 56, 73, 122, 70, 50, 27, 36, 74, 65, 58,
	50, 45, 85, 58, 56, 76, 45, 58, 42, 85, 27, 85, 47, 73, 107, 47, 39, 31, 88, 45, 28, 40, 33,
	70, 65, 46, 41, 38, 35, 96, 33, 24, 120, 69, 84, 29, 22, 28, 48, 106, 61, 72, 107, 72, 54, 31,
	86, 48, 37, 45, 69, 43, 90, 50, 20, 35, 30, 40, 37, 57, 113, 23, 39, 137, 55, 45, 30, 45, 107,
	56, 90, 39, 30, 83, 22, 43, 57, 98, 23, 88, 53, 32, 36, 60, 144, 63, 11, 48, 16, 18, 23, 38,
	62, 42, 44, 58, 27, 13, 23, 69, 75, 36, 22, 44, 58, 30, 97, 53, 119, 72, 174, 65, 20, 72, 59,
	76, 49, 29, 30, 29, 48, 26, 43, 29, 129, 107, 57, 27, 33, 38, 72, 189, 37, 40, 23, 81, 15, 99,
	56, 36, 58, 55, 31, 28, 49, 42, 85, 47, 77, 88, 32, 35, 64, 25, 51, 67, 70, 38, 57, 38, 61, 46,
	69, 70, 41, 148, 25, 46, 46, 49, 165, 30, 48, 19, 38, 71, 128, 74, 48, 25, 56, 51, 20, 72, 42,
	80, 44, 46, 50, 62, 37, 44, 47, 65, 44, 48, 89, 15, 21, 57, 64, 49, 106, 14, 52, 59, 53, 39,
	62, 101, 18, 71, 69, 55, 101, 60, 114, 88, 27, 78, 37, 88, 28, 29, 67, 55, 19, 99, 28, 31, 94,
	99, 20, 38, 22, 94, 22, 85, 13, 21, 57, 50, 72, 13, 87, 92, 106, 28, 25, 39, 67, 40, 45, 80,
	37, 64, 44, 100, 66, 52, 32, 31, 26, 50, 46, 28, 73, 68, 25, 80, 89, 63, 78, 32, 57, 27, 46,
	65, 62, 89, 130, 53, 80, 100, 35, 50, 71, 69, 20, 45, 54, 74, 62, 48, 24, 45, 43, 95, 52, 50,
	75, 80, 19, 78, 41, 32, 68, 88, 22, 86, 48, 66, 60, 91, 72, 30, 78, 62, 58, 53, 51, 104, 21,
	48, 93, 62, 54, 33, 55, 30, 51, 72, 55, 44, 141, 31, 56, 50, 23, 92, 41, 51, 45, 44, 26, 33,
	59, 33, 62, 72, 100, 64, 38, 41, 69, 57, 44, 104, 19, 79, 46, 93, 65, 105, 41, 55, 50, 27, 80,
	63, 22, 34, 35, 115, 48, 34, 45, 27, 25, 13, 30, 67, 154, 42, 60, 38, 31, 59, 30, 66, 43, 44,
	82, 36, 71, 107, 56, 90, 14, 106, 81, 39, 57, 45, 117, 108, 44, 18, 37, 80, 28, 69, 54, 29, 55,
	43, 35, 35, 149, 41, 47, 39, 104, 111, 18, 83, 26, 21, 99, 46, 35, 58, 45, 51, 27, 64, 152, 82,
	48, 23, 59, 57, 71, 90, 23, 97, 75, 123, 22, 50, 74, 28, 66, 44, 51, 66, 28, 91, 58, 34, 26,
	127, 95, 49, 83, 97, 122, 80, 35, 53, 50, 102, 38, 18, 15, 33, 83, 25, 120, 54, 34, 88, 64, 43,
	52, 126, 50, 76, 126, 35, 74, 33, 18, 21, 105, 46, 61, 137, 36, 63, 58, 51, 43, 34, 51, 41, 40,
	47, 48, 67, 34, 21, 23, 100, 90, 26, 109, 81, 28, 49, 48, 177, 42, 32, 30, 22, 56, 40, 59, 106,
	41, 68, 39, 73, 31, 65, 51, 50, 29, 21, 133, 65, 45, 81, 54, 21, 88, 20, 38, 37, 91, 43, 29,
	35, 95, 107, 24, 83, 30, 28, 88, 48, 28, 88, 24, 97, 91, 46, 63, 31, 53, 46, 57, 40, 26, 86,
	118, 87, 27, 67, 18, 43, 44, 105, 32, 54, 82, 55, 109, 57, 107, 87, 26, 54, 24, 42, 85, 42, 81,
	32, 113, 62, 33, 77, 71, 63, 67, 124, 57, 43, 98, 90, 34, 33, 95, 74, 57, 31, 35, 83, 66, 35,
	61, 81, 85, 69, 74, 47, 134, 47, 86, 31, 116, 33, 46, 46, 19, 47, 61, 35, 58, 26, 59, 62, 37,
	86, 99, 65, 41, 106, 47, 66, 71, 18, 23, 81, 174, 43, 56, 54, 73, 33, 54, 92, 66, 75, 65, 48,
	58, 14, 68, 47, 147, 88, 50, 23, 21, 108, 74, 74, 33, 92, 38, 96, 81, 80, 42, 106, 63, 22, 31,
	46, 32, 186, 85, 43, 59, 84, 21, 30, 45, 31, 82, 57, 36, 24, 74, 14, 64, 50, 46, 22, 80, 43,
	152, 68, 39, 50, 20, 42, 96, 101, 38, 59, 63, 42, 39, 71, 59, 53, 26, 54, 37, 29, 75, 37, 46,
	34, 10, 43, 32, 34, 43, 47, 43, 41, 39, 40, 54, 49, 37, 43, 54, 39, 53, 43, 47, 59, 51, 69,
	102, 16, 85, 54, 31, 28, 64, 29, 41, 40, 88, 33, 76, 65, 48, 100, 33, 95, 41, 134, 31, 70, 45,
	58, 50, 47, 38, 44, 60, 43, 53, 59, 57, 58, 91, 19, 72, 75, 48, 27, 49, 60, 75, 69, 67, 41, 70,
	116, 112, 38, 43, 58, 40, 73, 77, 90, 48, 15, 41, 59, 46, 26, 50, 78, 110, 42, 21, 96, 134, 45,
	12, 36, 44, 99, 26, 51, 55, 46, 199, 67, 56, 80, 140, 17, 76, 69, 30, 42, 67, 49, 38, 20, 11,
	46, 40, 27, 44, 40, 35, 54, 20, 48, 83, 36, 34, 74, 44, 25, 57, 79, 83, 55, 99, 42, 45, 36, 35,
	26, 39, 111, 46, 75, 40, 54, 23, 104, 23, 26, 130, 22, 39, 27, 59, 29, 22, 67, 44, 61, 52, 50,
	65, 23, 133, 74, 68, 18, 47, 45, 29, 83, 53, 85, 57, 41, 68, 36, 76, 79, 21, 81, 46, 99, 55,
	107, 58, 99, 32, 37, 50, 37, 108, 27, 49, 33, 58, 32, 53, 55, 145, 29, 52, 102, 42, 73, 57,
	165, 44, 37, 132, 33, 44, 35, 24, 57, 73, 52, 30, 56, 52, 86, 107, 74, 54, 54, 66, 53, 23, 49,
	42, 45, 36, 81, 29, 47, 28, 36, 64, 79, 56, 26, 37, 42, 35, 54, 71, 34, 26, 90, 47, 44, 84, 35,
	45, 25, 35, 42, 54, 84, 15, 92, 43, 73, 38, 31, 49, 29, 25, 52, 32, 88, 68, 72, 129, 68, 23,
	33, 28, 34, 69, 55, 24, 31, 79, 32, 34, 37, 55, 58, 41, 107, 130, 71, 62, 91, 23, 59, 42, 45,
	59, 47, 77, 74, 41, 37, 77, 73, 46, 20, 50, 65, 30, 104, 37, 35, 51, 98, 65, 66, 47, 17, 32,
	23, 61, 35, 54, 65, 42, 74, 44, 32, 62, 68, 36, 58, 56, 42, 50, 60, 61, 72, 102, 27, 140, 46,
	47, 36, 57, 25, 30, 114, 54, 29, 18, 28, 32, 91, 32, 31, 68, 22, 15, 94, 54, 45, 52, 72, 102,
	49, 103, 57, 75, 58, 84, 48, 27, 49, 19, 110, 110, 36, 38, 22, 92, 62, 55, 15, 35, 27, 116, 44,
	27, 34, 70, 75, 27, 32, 23, 44, 53, 75, 69, 35, 43, 41, 53, 50, 92, 63, 102, 19, 61, 41, 50,
	38, 32, 87, 25, 16, 56, 33, 30, 74, 34, 168, 53, 45, 66, 32, 111, 37, 36, 76, 53, 20, 75, 58,
	41, 34, 68, 20, 98, 76, 44, 86, 74, 37, 105, 77, 36, 53, 50, 64, 66, 61, 76, 34, 151, 33, 58,
	60, 42, 65, 41, 55, 68, 40, 21, 35, 31, 31, 68, 68, 74, 28, 60, 29, 71, 90, 21, 66, 36, 38, 50,
	36, 34, 65, 33, 76, 48, 53, 52, 86, 27, 116, 24, 113, 33, 52, 18, 50, 20, 25, 29, 35, 56, 26,
	38, 68, 28, 80, 36, 109, 81, 43, 69, 24, 26, 48, 38, 73, 46, 18, 48, 38, 75, 55, 53, 25, 86,
	24, 76, 89, 65, 29, 55, 91, 43, 54, 39, 44, 9, 35, 110, 24, 38, 35, 49, 107, 97, 40, 32, 96,
	48, 45, 31, 69, 56, 54, 33, 49, 39, 110, 65, 57, 91, 46, 59, 33, 40, 36, 59, 16, 39, 62, 42,
	68, 109, 65, 31, 121, 65, 45, 65, 62, 31, 77, 52, 28, 49, 31, 30, 36, 45, 58, 18, 13, 12, 50,
	54, 24, 38, 65, 53, 117, 108, 44, 56, 49, 19, 38, 80, 33, 25, 45, 44, 38, 93, 59, 53, 27, 55,
	37, 26, 49, 33, 16, 28, 89, 91, 29, 83, 155, 56, 39, 32, 39, 52, 58, 33, 39, 46, 61, 24, 25,
	54, 28, 68, 75, 141, 53, 131, 54, 50, 82, 36, 102, 83, 79, 67, 111, 106, 21, 51, 31, 39, 15,
	16, 41, 71, 58, 95, 44, 52, 34, 24, 51, 93, 63, 28, 20, 16, 57, 26, 29, 99, 22, 29, 35, 32,
	102, 53, 102, 98, 48, 47, 42, 21, 72, 38, 55, 55, 58, 65, 87, 20, 57, 49, 59, 23, 39, 25, 57,
	15, 42, 34, 53, 24, 68, 43, 111, 184, 74, 34, 88, 57, 58, 67, 108, 63, 48, 87, 36, 103, 67, 43,
	55, 57, 90, 34, 41, 94, 64, 48, 22, 43, 28, 33, 56, 128, 23, 27, 53, 94, 42, 87, 53, 34, 44,
	36, 43, 71, 49, 67, 45, 56, 32, 59, 40, 27, 50, 45, 38, 28, 99, 49, 34, 53, 41, 41, 76, 84,
	119, 104, 73, 35, 49, 85, 41, 21, 48, 28, 128, 52, 39, 77, 52, 27, 31, 31, 25, 75, 47, 117,
	124, 42, 48, 99, 50, 81, 54, 99, 70, 86, 58, 33, 31, 56, 17, 60, 41, 88, 78, 181, 98, 40, 89,
	28, 24, 37, 38, 105, 74, 34, 28, 66, 67, 71, 47, 34, 40, 127, 107, 177, 57, 28, 48, 59, 35, 46,
	43, 34, 27, 105, 18, 105, 126, 46, 36, 57, 52, 40, 71, 30, 104, 25, 45, 29, 24, 78, 33, 49, 46,
	41, 70, 62, 50, 23, 52, 11, 45, 40, 26, 51, 62, 60, 42, 46, 13, 28, 78, 65, 57, 63, 61, 51, 64,
	25, 59, 56, 57, 43, 59, 69, 142, 43, 72, 53, 64, 71, 44, 31, 39, 28, 55, 82, 69, 40, 61, 48,
	45, 43, 52, 150, 80, 48, 25, 92, 142, 56, 114, 56, 46, 47, 68, 59, 16, 67, 59, 63, 46, 32, 45,
	82, 53, 50, 39, 149, 85, 63, 50, 117, 53, 109, 45, 66, 24, 56, 52, 66, 39, 50, 58, 114, 47, 44,
	41, 56, 50, 94, 36, 75, 44, 36, 19, 94, 25, 34, 59, 11, 37, 38, 61, 29, 65, 105, 45, 53, 71,
	39, 60, 38, 45, 41, 135, 82, 44, 46, 49, 80, 32, 69, 20, 133, 46, 93, 54, 59, 64, 53, 42, 72,
	77, 94, 43, 31, 59, 62, 29, 61, 84, 52, 148, 41, 102, 55, 49, 31, 59, 82, 69, 23, 69, 34, 92,
	24, 27, 23, 64, 44, 69, 64, 18, 42, 20, 46, 44, 79, 38, 62, 46, 32, 27, 60, 39, 86, 25, 105,
	59, 30, 19, 94, 93, 20, 58, 37, 45, 30, 59, 23, 55, 44, 47, 48, 28, 40, 40, 119, 22, 50, 75,
	74, 55, 71, 73, 26, 50, 69, 73, 56, 140, 58, 22, 30, 34, 45, 52, 186, 41, 40, 123, 79, 48, 76,
	61, 63, 74, 46, 55, 82, 24, 15, 45, 33, 91, 29, 46, 26, 47, 43, 55, 61, 33, 97, 63, 64, 20, 44,
	75, 79, 93, 39, 126, 45, 104, 36, 50, 55, 73, 45, 40, 43, 99, 29, 44, 98, 72, 48, 56, 51, 59,
	49, 30, 56, 37, 45, 68, 78, 29, 24, 62, 44, 32, 62, 158, 70, 67, 96, 45, 107, 36, 46, 62, 90,
	107, 36, 33, 41, 19, 21, 61, 73, 90, 21, 109, 23, 29, 25, 37, 54, 29, 71, 73, 56, 37, 35, 46,
	33, 82, 82, 53, 74, 13, 39, 70, 45, 32, 41, 25, 68, 79, 19, 44, 23, 46, 38, 38, 39, 41, 66, 68,
	33, 46, 58, 20, 40, 72, 41, 26, 106, 41, 59, 41, 34, 71, 47, 85, 25, 55, 66, 29, 57, 82, 27,
	34, 59, 30, 24, 60, 69, 30, 118, 43, 94, 62, 31, 63, 56, 69, 79, 82, 53, 24, 40, 99, 84, 56,
	14, 21, 36, 60, 37, 82, 45, 10, 33, 118, 40, 56, 117, 22, 47, 38, 21, 104, 41, 55, 35, 97, 66,
	37, 38, 65, 82, 51, 67, 32, 25, 59, 164, 49, 57, 94, 61, 20, 37, 62, 85, 87, 36, 183, 51, 28,
	66, 22, 69, 46, 94, 52, 52, 39, 42, 30, 25, 32, 47, 31, 24, 40, 187, 47, 42, 54, 119, 74, 63,
	51, 25, 138, 42, 46, 35, 40, 47, 14, 197, 73, 58, 31, 26, 34, 36, 30, 46, 45, 39, 64, 36, 75,
	46, 49, 55, 52, 65, 43, 80, 49, 86, 21, 54, 50, 37, 40, 47, 31, 31, 51, 24, 62, 79, 55, 49, 27,
	39, 29, 68, 68, 19, 41, 60, 18, 41, 23, 175, 73, 21, 83, 71, 60, 168, 75, 37, 40, 154, 72, 47,
	86, 28, 66, 51, 42, 88, 162, 27, 39, 37, 54, 62, 21, 89, 77, 42, 64, 42, 21, 81, 62, 62, 75,
	68, 33, 36, 121, 34, 67, 60, 30, 83, 49, 115, 86, 41, 46, 20, 100, 31, 110, 20, 18, 31, 30, 39,
	51, 35, 38, 53, 32, 65, 86, 68, 25, 49, 50, 45, 47, 30, 63, 39, 27, 47, 29, 48, 75, 71, 54, 50,
	53, 81, 50, 69, 64, 125, 45, 50, 35, 29, 68, 38, 130, 110, 78, 21, 58, 88, 26, 97, 35, 24, 161,
	85, 80, 32, 56, 32, 140, 118, 44, 52, 26, 66, 51, 51, 75, 38, 172, 51, 17, 65, 69, 47, 77, 27,
	69, 76, 78, 34, 57, 41, 58, 13, 59, 29, 54, 168, 48, 132, 33, 66, 141, 50, 38, 74, 30, 100, 55,
	34, 44, 56, 82, 59, 55, 39, 36, 56, 45, 33, 83, 63, 44, 78, 43, 26, 32, 35, 33, 96, 80, 83, 71,
	45, 71, 39, 40, 36, 38, 59, 83, 66, 37, 56, 45, 36, 131, 62, 65, 95, 106, 44, 33, 23, 33, 37,
	28, 29, 43, 36, 73, 46, 40, 27, 31, 20, 34, 56, 24, 67, 86, 76, 50, 40, 86, 48, 62, 139, 51,
	71, 28, 27, 81, 89, 15, 44, 33, 86, 38, 49, 119, 41, 30, 83, 41, 123, 36, 56, 90, 19, 25, 32,
	48, 37, 38, 45, 51, 56, 53, 33, 42, 63, 79, 104, 28, 56, 65, 25, 122, 77, 85, 28, 69, 117, 71,
	43, 49, 92, 43, 33, 65, 39, 57, 45, 40, 28, 56, 36, 38, 154, 23, 43, 47, 33, 61, 51, 25, 105,
	33, 99, 62, 42, 74, 27, 45, 45, 43, 61, 28, 35, 64, 66, 84, 30, 30, 94, 51, 21, 50, 110, 39,
	73, 15, 77, 119, 72, 76, 61, 68, 45, 51, 26, 34, 53, 39, 65, 38, 62, 29, 29, 66, 78, 44, 45,
	110, 85, 78, 181, 145, 43, 63, 53, 140, 24, 36, 35, 20, 76, 101, 92, 53, 101, 45, 53, 78, 53,
	31, 57, 28, 25, 53, 47, 34, 84, 38, 89, 157, 75, 61, 68, 92, 51, 69, 31, 106, 60, 42, 100, 37,
	73, 42, 33, 43, 63, 130, 29, 37, 18, 53, 75, 35, 41, 62, 49, 40, 37, 32, 40, 36, 98, 16, 28,
	40, 50, 61, 110, 72, 43, 65, 60, 13, 28, 67, 35, 36, 92, 164, 38, 70, 31, 28, 54, 124, 37, 28,
	52, 33, 28, 51, 24, 32, 69, 28, 60, 26, 37, 109, 36, 47, 44, 58, 75, 43, 50, 44, 49, 62, 48,
	40, 28, 37, 14, 66, 40, 44, 87, 29, 69, 111, 49, 81, 28, 54, 54, 30, 23, 41, 46, 33, 58, 12,
	30, 84, 34, 81, 37, 72, 41, 46, 36, 57, 72, 24, 37, 26, 46, 75, 31, 71, 52, 16, 28, 41, 19, 47,
	106, 107, 179, 25, 54, 26, 26, 22, 37, 105, 64, 40, 62, 62, 18, 34, 46, 106, 54, 42, 36, 38,
	24, 21, 119, 31, 21, 21, 74, 59, 28, 108, 46, 55, 34, 21, 54, 62, 82, 36, 45, 42, 77, 40, 46,
	72, 45, 51, 53, 25, 27, 27, 67, 86, 54, 96, 25, 42, 60, 18, 29, 20, 23, 40, 41, 37, 46, 44, 37,
	60, 30, 34, 106, 62, 42, 49, 43, 74, 52, 142, 68, 35, 52, 61, 135, 200, 70, 60, 50, 74, 51, 40,
	34, 63, 38, 84, 27, 41, 47, 92, 13, 92, 96, 46, 33, 33, 34, 129, 47, 39, 29, 125, 118, 59, 39,
	39, 98, 32, 32, 72, 35, 67, 76, 86, 94, 67, 39, 58, 66, 36, 27, 59, 19, 70, 49, 105, 162, 60,
	43, 54, 77, 84, 35, 77, 83, 21, 39, 58, 103, 72, 39, 107, 19, 44, 21, 62, 16, 136, 72, 107, 61,
	19, 37, 79, 59, 107, 19, 42, 20, 48, 65, 18, 47, 30, 17, 79, 47, 56, 91, 60, 40, 37, 74, 73,
	42, 31, 59, 64, 44, 46, 45, 24, 63, 29, 89, 78, 34, 62, 56, 39, 30, 115, 37, 21, 68, 35, 96,
	79, 48, 94, 53, 126, 81, 68, 63, 28, 70, 125, 60, 78, 31, 51, 16, 29, 61, 73, 28, 83, 56, 46,
	125, 121, 49, 73, 40, 31, 35, 44, 25, 81, 83, 29, 53, 44, 37, 54, 31, 108, 50, 53, 22, 37, 55,
	132, 94, 34, 71, 44, 84, 63, 84, 62, 20, 98, 28, 61, 45, 41, 32, 66, 59, 55, 41, 53, 42, 38,
	128, 69, 17, 49, 101, 48, 69, 12, 37, 48, 36, 55, 20, 57, 40, 64, 26, 22, 60, 94, 29, 32, 34,
	37, 34, 36, 33, 58, 73, 52, 42, 63, 48, 33, 22, 18, 37, 56, 28, 35, 44, 46, 64, 50, 84, 55, 86,
	85, 86, 89, 68, 58, 41, 45, 21, 48, 42, 33, 19, 83, 61, 43, 35, 36, 53, 67, 55, 44, 23, 39, 73,
	114, 41, 25, 83, 37, 45, 75, 41, 60, 52, 29, 47, 48, 26, 100, 62, 24, 44, 22, 48, 73, 39, 69,
	61, 39, 69, 85, 29, 25, 52, 14, 47, 60, 28, 61, 33, 41, 45, 42, 64, 47, 92, 21, 35, 37, 21, 70,
	58, 27, 37, 86, 44, 20, 35, 71, 38, 101, 49, 42, 25, 55, 63, 64, 74, 28, 36, 96, 45, 44, 43,
	114, 80, 44, 109, 28, 29, 29, 90, 62, 17, 46, 44, 88, 42, 31, 49, 21, 47, 66, 48, 45, 101, 67,
	44, 93, 42, 45, 76, 57, 20, 60, 78, 41, 43, 51, 95, 55, 38, 62, 39, 75, 110, 67, 130, 21, 67,
	45, 46, 37, 60, 50, 32, 44, 86, 20, 39, 53, 45, 117, 74, 59, 71, 14, 76, 98, 40, 29, 39, 52,
	33, 50, 17, 52, 57, 53, 44, 50, 52, 96, 48, 45, 53, 73, 45, 42, 69, 96, 75, 55, 140, 44, 103,
	29, 39, 31, 101, 41, 155, 13, 51, 31, 53, 92, 86, 37, 24, 85, 14, 87, 62, 86, 28, 34, 38, 55,
	50, 29, 41, 66, 20, 24, 58, 26, 16, 55, 61, 29, 57, 48, 90, 21, 67, 34, 38, 146, 84, 115, 54,
	45, 58, 43, 18, 87, 46, 52, 74, 111, 61, 51, 48, 79, 56, 60, 26, 59, 47, 27, 33, 60, 34, 25,
	37, 78, 40, 97, 50, 43, 47, 39, 25, 33, 23, 51, 174, 83, 85, 26, 46, 61, 55, 52, 49, 91, 23,
	89, 41, 38, 25, 34, 41, 72, 44, 92, 12, 40, 30, 80, 25, 61, 84, 61, 67, 88, 122, 74, 123, 68,
	57, 33, 34, 52, 69, 36, 67, 56, 23, 32, 38, 41, 29, 46, 61, 23, 44, 25, 54, 27, 64, 79, 114,
	33, 33, 40, 83, 26, 29, 52, 47, 41, 65, 116, 103, 25, 57, 55, 33, 36, 89, 52, 92, 46, 41, 74,
	32, 132, 51, 84, 71, 49, 41, 76, 50, 45, 30, 99, 36, 95, 92, 15, 23, 51, 89, 22, 49, 58, 53,
	83, 45, 100, 28, 50, 32, 44, 68, 34, 142, 126, 123, 10, 47, 43, 77, 46, 111, 74, 93, 28, 93,
	65, 123, 36, 40, 21, 65, 61, 75, 73, 24, 61, 65, 52, 102, 79, 64, 28, 37, 53, 15, 42, 37, 45,
	41, 36, 38, 82, 36, 41, 44, 15, 37, 48, 43, 85, 44, 58, 22, 67, 33, 78, 22, 40, 27, 63, 40, 31,
	90, 102, 56, 49, 44, 46, 57, 45, 39, 28, 35, 25, 60, 53, 72, 18, 74, 66, 56, 129, 29, 48, 45,
	52, 38, 159, 18, 30, 54, 47, 22, 50, 45, 32, 38, 63, 83, 18, 81, 30, 39, 68, 46, 90, 16, 48,
	35, 47, 83, 41, 54, 70, 32, 57, 88, 37, 29, 31, 78, 28, 35, 82, 67, 82, 31, 62, 33, 27, 27,
	117, 35, 118, 30, 52, 128, 56, 51, 54, 59, 50, 162, 30, 17, 9, 95, 50, 84, 52, 32, 29, 66, 36,
	64, 51, 120, 58, 67, 78, 12, 24, 44, 65, 57, 75, 97, 34, 23, 23, 56, 26, 16, 85, 32, 79, 82,
	27, 17, 66, 38, 52, 96, 112, 61, 25, 61, 52, 32, 30, 53, 146, 26, 82, 53, 64, 42, 36, 32, 43,
	94, 32, 178, 23, 106, 27, 34, 77, 64, 119, 37, 72, 50, 49, 70, 52, 82, 59, 53, 56, 42, 21, 51,
	61, 28, 123, 78, 92, 58, 26, 58, 39, 79, 59, 57, 48, 68, 34, 76, 26, 91, 51, 56, 88, 19, 24,
	52, 53, 47, 56, 87, 62, 47, 45, 80, 38, 47, 58, 32, 68, 65, 88, 52, 21, 71, 26, 58, 97, 104,
	120, 120, 47, 38, 66, 109, 97, 121, 48, 52, 36, 48, 78, 45, 40, 51, 74, 26, 40, 49, 123, 31,
	100, 27, 68, 32, 39, 15, 16, 26, 31, 66, 65, 37, 66, 33, 93, 54, 195, 27, 60, 52, 39, 22, 77,
	100, 42, 50, 61, 48, 133, 80, 95, 52, 83, 115, 108, 43, 35, 49, 31, 27, 30, 26, 95, 45, 33, 60,
	81, 43, 39, 101, 43, 44, 53, 41, 36, 32, 37, 23, 32, 160, 49, 109, 33, 36, 64, 41, 41, 74, 38,
	34, 59, 23, 48, 35, 49, 36, 72, 55, 61, 85, 120, 44, 38, 58, 23, 63, 35, 18, 89, 56, 84, 41,
	48, 51, 118, 30, 47, 64, 73, 23, 56, 26, 97, 47, 52, 23, 43, 37, 42, 51, 31, 46, 68, 23, 28,
	68, 75, 61, 88, 45, 85, 49, 56, 96, 149, 24, 143, 62, 41, 35, 39, 99, 44, 43, 81, 25, 70, 26,
	27, 47, 121, 22, 80, 29, 29, 113, 23, 49, 89, 42, 33, 26, 55, 55, 74, 50, 48, 76, 31, 22, 47,
	40, 61, 46, 103, 67, 87, 116, 48, 53, 57, 63, 109, 65, 46, 58, 89, 50, 26, 78, 41, 81, 41, 101,
	28, 113, 50, 33, 66, 20, 106, 93, 36, 117, 94, 109, 43, 102, 36, 68, 18, 137, 44, 53, 81, 20,
	21, 80, 81, 76, 48, 27, 15, 63, 38, 34, 45, 50, 22, 39, 73, 46, 32, 66, 49, 47, 71, 44, 43, 23,
	39, 90, 43, 40, 40, 63, 24, 62, 27, 23, 37, 80, 25, 49, 61, 29, 55, 47, 125, 60, 58, 99, 40,
	67, 85, 48, 20, 66, 59, 183, 38, 31, 44, 71, 49, 25, 51, 71, 45, 32, 27, 60, 73, 73, 38, 32,
	51, 48, 39, 36, 21, 47, 67, 49, 69, 44, 30, 108, 22, 97, 60, 110, 40, 20, 59, 71, 45, 40, 56,
	122, 72, 102, 32, 22, 39, 64, 50, 71, 42, 31, 68, 40, 172, 22, 32, 43, 72, 48, 55, 41, 35, 93,
	53, 33, 59, 47, 49, 82, 97, 70, 40, 51, 55, 27, 44, 78, 165, 64, 29, 35, 48, 25, 44, 96, 89,
	28, 116, 73, 20, 41, 37, 36, 96, 43, 47, 45, 63, 65, 34, 28, 38, 27, 54, 153, 60, 50, 83, 44,
	54, 81, 55, 41, 47, 30, 36, 57, 35, 55, 81, 104, 29, 58, 25, 35, 21, 66, 72, 42, 56, 27, 61,
	35, 70, 90, 57, 40, 53, 32, 114, 29, 42, 59, 60, 43, 54, 32, 32, 121, 104, 64, 33, 44, 58, 81,
	30, 43, 59, 17, 93, 131, 87, 53, 32, 28, 38, 96, 64, 48, 60, 16, 60, 70, 43, 73, 42, 43, 63,
	71, 64, 30, 97, 60, 45, 41, 51, 111, 47, 58, 54, 56, 60, 43, 61, 52, 55, 94, 88, 42, 26, 56,
	71, 42, 21, 51, 73, 156, 79, 65, 143, 36, 121, 48, 38, 42, 106, 52, 71, 130, 113, 43, 40, 38,
	51, 39, 23, 79, 90, 34, 55, 45, 29, 161, 50, 65, 43, 129, 54, 49, 38, 38, 49, 28, 89, 49, 31,
	62, 41, 42, 50, 27, 42, 75, 39, 56, 39, 30, 53, 19, 87, 69, 37, 43, 56, 45, 48, 59, 42, 40, 20,
	144, 43, 41, 127, 90, 37, 104, 47, 74, 36, 61, 21, 52, 59, 15, 27, 39, 40, 35, 31, 72, 98, 30,
	36, 14, 50, 25, 50, 43, 71, 82, 114, 24, 64, 107, 20, 91, 126, 43, 35, 28, 100, 54, 28, 41, 42,
	77, 57, 115, 48, 35, 66, 35, 19, 80, 90, 50, 58, 19, 53, 32, 170, 85, 47, 39, 13, 26, 47, 71,
	108, 59, 24, 71, 44, 55, 39, 55, 42, 43, 43, 48, 76, 33, 80, 64, 36, 21, 106, 39, 59, 98, 25,
	15, 60, 96, 36, 62, 46, 52, 51, 83, 88, 178, 40, 78, 21, 26, 42, 164, 70, 100, 55, 29, 104, 93,
	89, 20, 29, 54, 78, 60, 40, 96, 41, 66, 77, 20, 42, 77, 96, 89, 24, 72, 24, 65, 75, 88, 47, 47,
	51, 99, 42, 88, 58, 70, 59, 44, 63, 44, 62, 31, 61, 26, 39, 24, 64, 130, 48, 33, 21, 18, 53,
	56, 68, 73, 55, 133, 40, 48, 113, 83, 61, 43, 30, 45, 126, 53, 63, 108, 39, 67, 60, 60, 93, 46,
	13, 66, 104, 53, 113, 55, 167, 60, 89, 118, 74, 35, 63, 41, 64, 99, 36, 42, 31, 35, 31, 70, 28,
	29, 78, 77, 61, 34, 58, 26, 36, 54, 81, 42, 68, 49, 35, 72, 36, 158, 96, 52, 40, 79, 108, 21,
	44, 24, 19, 35, 21, 79, 51, 16, 54, 90, 19, 103, 76, 41, 83, 99, 34, 57, 40, 47, 114, 29, 57,
	26, 45, 48, 46, 39, 30, 116, 152, 58, 35, 27, 68, 38, 52, 82, 40, 58, 149, 39, 43, 39, 38, 80,
	48, 51, 27, 13, 56, 23, 62, 23, 64, 25, 64, 60, 70, 99, 23, 91, 34, 66, 56, 40, 55, 49, 29, 41,
	40, 98, 48, 56, 32, 65, 33, 54, 15, 48, 30, 28, 153, 26, 56, 26, 18, 47, 60, 45, 42, 147, 59,
	36, 36, 140, 110, 34, 29, 86, 68, 41, 41, 50, 54, 97, 53, 123, 25, 86, 68, 149, 61, 54, 39, 23,
	49, 72, 34, 75, 52, 24, 35, 100, 74, 36, 57, 114, 60, 35, 52, 41, 35, 70, 30, 50, 63, 79, 47,
	97, 45, 50, 45, 76, 40, 49, 41, 86, 48, 89, 171, 21, 171, 50, 41, 49, 47, 26, 37, 22, 87, 37,
	110, 25, 51, 40, 56, 34, 53, 64, 70, 80, 199, 76, 30, 36, 37, 40, 94, 38, 34, 26, 45, 39, 40,
	49, 37, 60, 49, 40, 50, 54, 84, 50, 53, 82, 54, 49, 89, 108, 42, 87, 37, 25, 47, 36, 61, 134,
	66, 110, 76, 37, 110, 105, 30, 32, 39, 98, 84, 138, 66, 63, 113, 34, 36, 141, 28, 50, 44, 48,
	42, 56, 72, 30, 47, 23, 37, 23, 26, 72, 46, 18, 58, 13, 54, 22, 170, 41, 66, 35, 78, 30, 80,
	37, 48, 103, 46, 38, 45, 76, 24, 41, 50, 52, 41, 44, 38, 49, 36, 53, 47, 66, 45, 35, 47, 71,
	21, 116, 24, 47, 92, 117, 100, 48, 79, 54, 32, 68, 57, 33, 44, 48, 80, 36, 45, 55, 34, 50, 30,
	36, 43, 36, 42, 37, 37, 44, 39, 29, 27, 71, 70, 32, 74, 38, 56, 51, 35, 61, 48, 50, 26, 39, 28,
	37, 42, 51, 50, 57, 51, 108, 79, 118, 54, 61, 36, 55, 20, 59, 15, 37, 30, 43, 69, 60, 98, 59,
	57, 46, 81, 65, 49, 82, 46, 67, 170, 36, 118, 111, 67, 34, 47, 29, 24, 32, 39, 84, 73, 54, 62,
	88, 92, 21, 76, 192, 27, 48, 44, 78, 49, 33, 82, 45, 61, 73, 42, 119, 46, 36, 55, 70, 64, 35,
	38, 74, 21, 67, 69, 20, 20, 29, 45, 48, 63, 43, 27, 52, 67, 47, 25, 121, 54, 63, 21, 37, 26,
	23, 49, 34, 32, 56, 48, 122, 100, 69, 63, 55, 52, 23, 84, 41, 88, 45, 44, 36, 32, 91, 93, 87,
	32, 81, 51, 94, 72, 27, 72, 68, 43, 106, 72, 50, 73, 90, 97, 74, 50, 58, 43, 80, 27, 46, 27,
	32, 92, 33, 25, 17, 16, 100, 54, 113, 33, 26, 31, 54, 19, 22, 40, 57, 48, 34, 45, 18, 22, 69,
	64, 56, 154, 93, 86, 56, 95, 27, 72, 59, 17, 33, 42, 26, 23, 35, 20, 39, 40, 83, 49, 69, 54,
	89, 29, 35, 37, 16, 125, 68, 65, 35, 38, 60, 54, 153, 71, 18, 68, 96, 56, 60, 44, 55, 84, 33,
	63, 47, 52, 63, 73, 35, 41, 35, 70, 39, 33, 36, 45, 169, 48, 83, 46, 58, 67, 43, 127, 59, 51,
	28, 73, 18, 62, 56, 48, 33, 72, 12, 22, 155, 59, 42, 46, 53, 78, 45, 80, 133, 21, 44, 74, 36,
	33, 22, 83, 99, 20, 33, 36, 33, 24, 40, 104, 24, 33, 50, 142, 62, 71, 25, 59, 18, 42, 110, 68,
	89, 69, 42, 49, 47, 86, 26, 101, 85, 36, 153, 32, 27, 50, 70, 88, 71, 18, 57, 65, 61, 31, 76,
	54, 37, 83, 100, 30, 48, 17, 31, 60, 43, 105, 35, 51, 59, 171, 38, 46, 36, 30, 69, 39, 54, 165,
	72, 54, 26, 66, 44, 70, 88, 53, 55, 141, 73, 57, 30, 46, 48, 62, 50, 45, 58, 46, 57, 26, 50,
	99, 32, 94, 77, 69, 121, 79, 32, 74, 34, 78, 73, 66, 88, 31, 35, 47, 45, 37, 56, 68, 25, 82,
	31, 65, 37, 86, 56, 20, 87, 69, 82, 102, 21, 69, 41, 22, 61, 116, 58, 23, 42, 117, 41, 60, 28,
	117, 120, 53, 65, 113, 83, 70, 56, 34, 44, 22, 61, 45, 65, 63, 119, 33, 55, 26, 26, 68, 55, 29,
	34, 54, 94, 60, 33, 94, 33, 71, 26, 31, 59, 34, 52, 37, 97, 33, 42, 30, 133, 49, 126, 75, 51,
	18, 72, 56, 48, 31, 74, 95, 24, 24, 40, 83, 43, 62, 52, 82, 29, 33, 41, 49, 68, 39, 50, 20, 33,
	56, 96, 61, 62, 35, 31, 75, 123, 57, 39, 160, 58, 44, 43, 57, 29, 52, 30, 39, 43, 63, 82, 46,
	99, 24, 54, 108, 84, 146, 66, 30, 25, 53, 62, 40, 64, 23, 50, 61, 25, 59, 54, 18, 33, 44, 35,
	71, 28, 31, 33, 44, 10, 100, 36, 45, 30, 57, 52, 18, 43, 111, 39, 62, 15, 25, 55, 43, 50, 61,
	38, 69, 68, 15, 105, 89, 61, 53, 34, 35, 87, 50, 61, 65, 55, 67, 70, 14, 53, 82, 22, 39, 30,
	59, 43, 38, 40, 83, 68, 30, 91, 45, 43, 140, 125, 37, 27, 29, 64, 70, 73, 15, 57, 34, 34, 60,
	85, 48, 37, 30, 72, 39, 56, 27, 60, 24, 54, 28, 27, 25, 25, 42, 40, 89, 49, 22, 107, 38, 48,
	43, 49, 15, 56, 62, 48, 73, 39, 41, 64, 108, 35, 44, 24, 94, 39, 17, 28, 118, 72, 48, 60, 33,
	48, 57, 35, 70, 79, 24, 85, 55, 30, 73, 34, 84, 66, 32, 70, 37, 61, 44, 68, 49, 42, 41, 48, 21,
	34, 65, 109, 86, 81, 73, 63, 20, 46, 53, 94, 40, 90, 126, 19, 45, 37, 49, 62, 82, 44, 52, 25,
	88, 35, 36, 39, 28, 111, 61, 28, 61, 48, 36, 33, 49, 65, 63, 31, 53, 40, 52, 46, 47, 43, 120,
	42, 65, 62, 43, 47, 57, 36, 43, 43, 73, 23, 49, 114, 98, 18, 40, 44, 31, 35, 80, 35, 38, 25,
	80, 38, 54, 52, 52, 56, 41, 79, 45, 39, 35, 57, 64, 28, 117, 46, 39, 45, 26, 32, 43, 42, 37,
	45, 80, 71, 44, 55, 52, 63, 76, 43, 82, 38, 31, 56, 60, 55, 44, 65, 59, 69, 40, 32, 80, 44, 74,
	34, 117, 31, 57, 149, 18, 50, 61, 32, 61, 66, 43, 35, 41, 31, 26, 32, 30, 42, 76, 42, 27, 61,
	38, 44, 30, 33, 120, 29, 40, 39, 41, 51, 37, 21, 55, 51, 57, 68, 23, 70, 53, 72, 50, 142, 113,
	32, 63, 82, 65, 61, 40, 38, 76, 35, 17, 44, 33, 33, 97, 55, 41, 24, 18, 62, 68, 35, 79, 40, 38,
	54, 21, 63, 50, 46, 81, 37, 93, 39, 41, 24, 39, 34, 28, 29, 46, 21, 43, 61, 32, 136, 53, 24,
	76, 35, 58, 75, 49, 40, 17, 48, 35, 57, 43, 44, 31, 60, 44, 53, 68, 87, 40, 40, 49, 74, 90, 79,
	37, 110, 24, 53, 41, 33, 70, 90, 47, 32, 33, 20, 64, 53, 57, 32, 43, 38, 45, 34, 49, 94, 29,
	35, 60, 16, 24, 49, 41, 62, 19, 55, 103, 13, 65, 36, 20, 98, 64, 69, 21, 90, 146, 44, 96, 20,
	160, 31, 46, 38, 47, 44, 65, 89, 40, 51, 67, 53, 102, 55, 25, 44, 75, 36, 100, 107, 30, 197,
	22, 61, 34, 23, 47, 62, 59, 32, 57, 38, 33, 42, 69, 33, 111, 58, 43, 67, 48, 30, 33, 110, 130,
	29, 39, 65, 39, 31, 60, 55, 44, 90, 59, 28, 35, 61, 102, 32, 53, 74, 63, 61, 34, 41, 68, 29,
	49, 21, 111, 53, 48, 42, 27, 56, 48, 36, 48, 34, 36, 41, 63, 37, 27, 57, 33, 54, 44, 61, 54,
	44, 63, 53, 76, 52, 48, 31, 87, 53, 58, 35, 35, 55, 61, 29, 70, 114, 42, 91, 38, 87, 29, 82,
	74, 89, 83, 96, 42, 100, 87, 27, 47, 34, 114, 39, 45, 52, 64, 41, 30, 16, 120, 37, 34, 41, 32,
	104, 51, 53, 105, 28, 76, 63, 87, 38, 25, 30, 53, 97, 38, 28, 37, 50, 22, 74, 55, 42, 48, 91,
	37, 35, 87, 178, 86, 57, 170, 35, 67, 68, 91, 24, 67, 63, 48, 91, 90, 81, 52, 89, 62, 36, 26,
	39, 63, 52, 30, 16, 74, 43, 31, 79, 34, 59, 58, 40, 45, 58, 29, 31, 58, 104, 57, 129, 55, 78,
	63, 75, 64, 51, 44, 43, 35, 19, 51, 63, 71, 25, 70, 18, 29, 26, 29, 73, 17, 60, 51, 35, 103,
	49, 31, 51, 89, 34, 53, 64, 81, 45, 34, 43, 76, 73, 49, 88, 48, 33, 56, 28, 47, 91, 47, 62, 53,
	59, 120, 27, 79, 55, 63, 37, 43, 41, 113, 64, 18, 18, 38, 56, 57, 65, 40, 81, 50, 45, 55, 60,
	49, 53, 13, 28, 50, 54, 97, 39, 39, 26, 41, 95, 119, 75, 90, 76, 77, 56, 47, 84, 43, 45, 64,
	37, 43, 23, 45, 37, 57, 55, 73, 29, 52, 34, 17, 25, 79, 48, 75, 52, 110, 40, 36, 27, 38, 56,
	126, 101, 64, 25, 25, 49, 42, 16, 53, 16, 51, 59, 42, 39, 51, 53, 34, 76, 67, 70, 51, 87, 22,
	38, 30, 61, 37, 36, 32, 39, 43, 46, 48, 36, 60, 53, 51, 37, 46, 37, 21, 93, 95, 74, 23, 36, 64,
	22, 78, 71, 52, 32, 43, 105, 25, 49, 37, 46, 59, 125, 51, 34, 105, 36, 22, 147, 200, 67, 43,
	46, 121, 95, 37, 27, 60, 23, 37, 61, 105, 18, 95, 187, 28, 42, 33, 68, 39, 71, 59, 59, 119, 38,
	88, 110, 33, 38, 59, 103, 59, 63, 57, 52, 54, 37, 98, 42, 86, 47, 56, 34, 44, 37, 36, 35, 61,
	53, 47, 28, 58, 27, 67, 32, 55, 72, 71, 25, 65, 93, 34, 63, 51, 78, 134, 26, 49, 80, 53, 64,
	57, 105, 54, 47, 64, 80, 46, 16, 78, 59, 42, 48, 27, 84, 65, 36, 51, 47, 35, 108, 37, 30, 33,
	64, 66, 39, 56, 95, 23, 53, 27, 34, 56, 69, 47, 82, 56, 47, 108, 84, 73, 51, 142, 39, 47, 38,
	58, 50, 41, 39, 30, 45, 38, 46, 97, 37, 94, 44, 57, 162, 66, 67, 81, 88, 61, 55, 30, 39, 125,
	119, 50, 33, 58, 50, 52, 40, 21, 52, 66, 79, 27, 81, 14, 59, 140, 48, 62, 27, 26, 25, 68, 33,
	32, 27, 37, 36, 81, 27, 52, 59, 21, 47, 40, 43, 60, 53, 138, 102, 82, 22, 58, 25, 71, 20, 29,
	39, 28, 96, 26, 50, 45, 66, 35, 44, 108, 15, 49, 78, 20, 35, 45, 27, 33, 42, 49, 35, 54, 99,
	27, 31, 31, 62, 34, 29, 22, 16, 55, 58, 38, 47, 39, 92, 101, 172, 100, 58, 68, 58, 36, 42, 28,
	38, 38, 58, 76, 59, 68, 16, 32, 48, 34, 47, 78, 129, 33, 54, 17, 32, 107, 75, 62, 105, 60, 68,
	71, 78, 61, 37, 105, 103, 69, 74, 45, 34, 68, 34, 21, 47, 36, 27, 47, 34, 106, 132, 45, 34, 45,
	38, 117, 90, 42, 112, 85, 76, 67, 55, 65, 63, 55, 36, 36, 38, 26, 20, 85, 42, 64, 19, 17, 25,
	66, 25, 77, 41, 52, 43, 53, 50, 67, 86, 44, 60, 50, 43, 71, 58, 29, 133, 79, 29, 96, 11, 46,
	57, 30, 20, 34, 55, 49, 45, 27, 14, 135, 46, 25, 22, 37, 47, 53, 43, 25, 75, 41, 55, 41, 115,
	70, 113, 92, 28, 127, 56, 25, 33, 21, 43, 31, 53, 53, 38, 31, 45, 69, 50, 44, 28, 109, 188, 86,
	39, 73, 25, 58, 74, 22, 19, 48, 16, 50, 46, 36, 48, 17, 195, 83, 70, 57, 31, 71, 68, 71, 28,
	38, 60, 37, 69, 51, 41, 63, 17, 41, 61, 21, 90, 54, 93, 30, 71, 70, 28, 141, 46, 27, 46, 118,
	152, 85, 73, 27, 25, 51, 82, 38, 38, 56, 68, 44, 61, 46, 77, 68, 39, 42, 34, 102, 34, 71, 51,
	70, 56, 36, 44, 41, 49, 59, 49, 30, 73, 31, 41, 79, 47, 47, 42, 38, 36, 44, 61, 58, 114, 53,
	69, 18, 54, 28, 42, 49, 39, 39, 42, 33, 37, 42, 60, 65, 60, 51, 65, 64, 73, 46, 120, 41, 26,
	39, 79, 53, 38, 40, 94, 19, 20, 66, 38, 59, 35, 69, 48, 113, 73, 27, 45, 60, 34, 34, 78, 36,
	48, 57, 18, 67, 31, 29, 24, 32, 94, 39, 23, 42, 90, 53, 52, 62, 98, 34, 54, 26, 44, 62, 80, 79,
	64, 60, 66, 58, 36, 42, 45, 68, 34, 131, 53, 57, 26, 73, 84, 76, 31, 30, 38, 55, 85, 21, 56,
	120, 57, 25, 29, 30, 53, 32, 117, 52, 24, 26, 63, 46, 62, 38, 72, 129, 65, 52, 60, 62, 44, 85,
	42, 29, 57, 39, 93, 99, 54, 80, 84, 67, 37, 50, 92, 49, 75, 53, 82, 42, 68, 38, 50, 80, 181,
	35, 102, 59, 125, 55, 73, 31, 87, 60, 20, 44, 61, 69, 41, 62, 65, 133, 48, 58, 36, 26, 36, 53,
	104, 33, 53, 32, 30, 38, 39, 148, 25, 37, 39, 65, 35, 46, 106, 78, 92, 29, 48, 40, 46, 28, 39,
	28, 48, 49, 67, 58, 30, 66, 41, 55, 69, 93, 76, 16, 77, 55, 27, 64, 28, 22, 56, 60, 79, 101,
	33, 45, 45, 89, 68, 30, 56, 71, 44, 74, 59, 29, 70, 75, 48, 71, 36, 91, 29, 32, 48, 63, 23, 54,
	91, 38, 116, 19, 44, 57, 29, 31, 110, 124, 35, 51, 27, 75, 40, 37, 75, 69, 31, 69, 58, 79, 41,
	23, 31, 46, 72, 17, 70, 60, 55, 68, 48, 98, 89, 26, 69, 33, 67, 56, 62, 20, 46, 59, 129, 45,
	46, 118, 20, 67, 63, 48, 57, 45, 102, 44, 128, 33, 34, 42, 31, 34, 58, 26, 49, 133, 78, 93, 61,
	65, 57, 61, 40, 83, 79, 117, 57, 21, 120, 105, 46, 29, 38, 46, 46, 54, 123, 56, 119, 28, 73,
	93, 27, 87, 25, 44, 65, 67, 36, 156, 56, 27, 35, 52, 21, 82, 163, 32, 88, 45, 55, 79, 71, 35,
	149, 74, 82, 47, 33, 49, 28, 56, 57, 41, 30, 27, 114, 64, 88, 79, 24, 30, 102, 35, 123, 165,
	17, 27, 43, 48, 50, 39, 11, 60, 65, 43, 60, 35, 22, 32, 80, 51, 38, 81, 61, 44, 84, 66, 26, 27,
	175, 94, 36, 68, 38, 80, 108, 24, 27, 36, 47, 20, 62, 49, 25, 22, 28, 67, 34, 44, 48, 52, 39,
	43, 44, 58, 34, 65, 65, 57, 41, 160, 66, 45, 32, 30, 20, 47, 42, 28, 52, 27, 28, 39, 99, 27,
	57, 26, 73, 27, 28, 49, 107, 78, 58, 149, 31, 26, 34, 35, 53, 70, 38, 69, 41, 184, 64, 36, 23,
	52, 53, 75, 49, 80, 27, 30, 52, 26, 64, 44, 37, 56, 86, 34, 69, 113, 69, 36, 56, 112, 63, 55,
	65, 30, 49, 38, 52, 114, 64, 38, 66, 70, 39, 65, 17, 53, 36, 36, 46, 46, 26, 72, 56, 27, 43,
	63, 56, 26, 48, 83, 33, 48, 31, 33, 32, 58, 84, 45, 36, 42, 105, 21, 59, 94, 48, 31, 23, 143,
	101, 68, 47, 58, 58, 114, 69, 42, 47, 35, 43, 41, 98, 91, 61, 28, 90, 63, 83, 39, 29, 39, 65,
	34, 67, 35, 47, 28, 28, 71, 39, 46, 57, 33, 17, 46, 55, 58, 48, 64, 93, 59, 41, 39, 43, 74, 96,
	64, 41, 100, 50, 57, 41, 41, 59, 96, 29, 32, 44, 58, 27, 48, 34, 54, 167, 64, 26, 57, 60, 51,
	21, 18, 53, 32, 44, 30, 88, 31, 62, 100, 54, 69, 49, 62, 38, 102, 51, 54, 42, 34, 46, 114, 46,
	122, 21, 23, 49, 64, 31, 31, 47, 90, 49, 27, 49, 53, 41, 69, 90, 30, 34, 96, 36, 53, 46, 106,
	36, 55, 43, 37, 82, 38, 109, 29, 51, 22, 35, 90, 58, 110, 64, 49, 45, 69, 36, 20, 37, 69, 52,
	100, 39, 65, 42, 72, 115, 44, 33, 45, 61, 61, 37, 32, 97, 46, 52, 41, 61, 48, 23, 50, 36, 51,
	58, 77, 28, 76, 62, 121, 74, 50, 70, 87, 37, 27, 33, 57, 73, 71, 37, 40, 31, 83, 27, 56, 104,
	31, 56, 111, 84, 35, 29, 151, 39, 81, 140, 37, 34, 26, 121, 42, 33, 63, 34, 116, 33, 37, 39,
	27, 50, 59, 69, 31, 31, 40, 21, 42, 76, 87, 38, 124, 71, 45, 42, 33, 61, 41, 68, 54, 136, 93,
	56, 45, 50, 61, 39, 66, 43, 41, 56, 63, 46, 63, 39, 66, 65, 66, 36, 59, 35, 25, 54, 51, 73, 48,
	36, 32, 87, 29, 49, 30, 56, 31, 49, 58, 45, 72, 86, 62, 84, 79, 39, 108, 20, 79, 50, 109, 35,
	29, 50, 55, 60, 57, 35, 46, 21, 67, 19, 92, 106, 66, 62, 69, 27, 42, 100, 131, 38, 46, 67, 22,
	75, 66, 30, 35, 57, 31, 57, 76, 51, 24, 47, 58, 38, 32, 33, 39, 59, 73, 75, 74, 52, 86, 129,
	36, 63, 61, 24, 50, 103, 37, 53, 28, 53, 54, 46, 26, 34, 29, 24, 14, 45, 108, 47, 103, 75, 85,
	33, 40, 45, 36, 36, 23, 82, 50, 55, 23, 67, 101, 108, 46, 82, 76, 20, 43, 121, 20, 147, 30, 30,
	76, 38, 61, 45, 24, 51, 66, 110, 34, 85, 127, 29, 33, 73, 35, 65, 99, 17, 98, 67, 33, 37, 58,
	138, 119, 22, 99, 22, 34, 39, 49, 45, 40, 46, 30, 80, 42, 73, 13, 86, 49, 53, 57, 33, 43, 89,
	140, 105, 93, 102, 30, 70, 47, 22, 141, 31, 76, 48, 44, 76, 27, 42, 37, 25, 41, 49, 49, 71, 34,
	38, 34, 79, 53, 47, 24, 62, 22, 111, 37, 75, 42, 58, 42, 79, 79, 51, 44, 22, 22, 24, 28, 47,
	71, 32, 28, 30, 16, 26, 16, 83, 107, 46, 60, 45, 41, 88, 74, 113, 16, 40, 71, 42, 137, 170, 81,
	34, 60, 80, 49, 63, 43, 40, 25, 41, 58, 38, 57, 28, 35, 34, 82, 73, 19, 43, 52, 83, 44, 35, 23,
	123, 49, 73, 48, 74, 64, 22, 64, 74, 81, 50, 36, 30, 28, 36, 22, 51, 113, 53, 72, 39, 42, 34,
	80, 24, 44, 46, 39, 43, 15, 23, 38, 46, 56, 100, 71, 56, 30, 77, 65, 33, 49, 61, 64, 77, 30,
	32, 54, 105, 56, 64, 75, 64, 20, 74, 37, 79, 72, 51, 39, 32, 28, 33, 41, 25, 64, 50, 37, 36,
	150, 24, 34, 77, 42, 19, 87, 99, 57, 15, 18, 133, 104, 37, 66, 57, 60, 54, 23, 36, 53, 67, 84,
	82, 74, 53, 63, 25, 31, 74, 51, 58, 67, 68, 92, 77, 80, 26, 31, 114, 55, 110, 39, 95, 38, 47,
	60, 78, 80, 113, 26, 121, 35, 43, 22, 73, 38, 55, 40, 70, 55, 46, 21, 67, 17, 58, 189, 64, 40,
	34, 84, 44, 59, 37, 76, 41, 40, 38, 81, 36, 52, 51, 16, 35, 135, 20, 30, 79, 51, 56, 51, 22,
	91, 52, 20, 50, 29, 198, 50, 69, 99, 70, 63, 33, 35, 68, 32, 139, 25, 24, 41, 58, 33, 48, 38,
	36, 43, 52, 63, 66, 62, 64, 23, 22, 107, 52, 17, 72, 44, 35, 36, 39, 25, 79, 35, 75, 77, 22,
	52, 72, 35, 71, 24, 24, 25, 34, 24, 65, 63, 39, 27, 55, 84, 31, 48, 75, 38, 116, 20, 13, 28,
	51, 37, 41, 85, 105, 41, 40, 25, 85, 32, 76, 62, 48, 24, 34, 49, 93, 92, 30, 65, 50, 35, 82,
	33, 87, 87, 32, 32, 52, 97, 46, 11, 29, 65, 78, 44, 37, 87, 122, 137, 29, 184, 28, 21, 41, 64,
	52, 29, 20, 25, 36, 61, 71, 57, 121, 103, 49, 61, 54, 78, 48, 29, 49, 50, 79, 79, 38, 84, 29,
	53, 68, 53, 26, 47, 37, 40, 78, 88, 55, 82, 59, 58, 27, 33, 45, 101, 53, 40, 64, 17, 51, 57,
	29, 55, 42, 37, 93, 66, 29, 29, 24, 40, 38, 39, 28, 66, 72, 27, 52, 72, 113, 67, 65, 44, 25,
	50, 70, 100, 79, 27, 45, 35, 19, 29, 23, 53, 25, 104, 33, 31, 37, 40, 52, 65, 106, 69, 68, 24,
	31, 107, 52, 41, 22, 47, 57, 44, 63, 85, 32, 33, 47, 48, 20, 44, 119, 69, 39, 33, 56, 52, 149,
	54, 116, 21, 54, 89, 39, 47, 51, 16, 140, 113, 67, 55, 65, 28, 49, 33, 45, 24, 46, 66, 10, 32,
	103, 36, 46, 37, 66, 50, 84, 63, 51, 61, 44, 18, 103, 13, 49, 43, 50, 47, 61, 105, 82, 92, 37,
	18, 40, 149, 44, 44, 67, 62, 48, 30, 100, 57, 53, 112, 39, 56, 33, 31, 75, 61, 35, 66, 25, 31,
	28, 49, 68, 100, 119, 38, 75, 39, 34, 58, 49, 55, 43, 82, 60, 71, 94, 53, 80, 110, 117, 87,
	103, 70, 99, 93, 55, 95, 50, 110, 50, 56, 162, 92, 47, 20, 71, 27, 17, 48, 25, 25, 64, 56, 37,
	28, 60, 41, 22, 52, 33, 107, 29, 63, 72, 50, 23, 52, 54, 126, 79, 45, 148, 29, 31, 44, 20, 60,
	36, 82, 14, 121, 56, 95, 35, 67, 61, 41, 37, 104, 17, 36, 28, 39, 97, 48, 107, 43, 54, 45, 70,
	74, 15, 33, 33, 33, 83, 30, 23, 131, 57, 41, 26, 43, 74, 35, 44, 28, 22, 92, 58, 51, 67, 84,
	113, 45, 99, 40, 37, 53, 37, 54, 76, 33, 84, 111, 22, 82, 97, 63, 33, 27, 33, 40, 92, 28, 54,
	20, 65, 61, 39, 71, 77, 31, 29, 34, 47, 86, 27, 40, 87, 52, 53, 39, 41, 109, 57, 35, 19, 47,
	136, 95, 78, 40, 28, 34, 33, 66, 67, 49, 27, 78, 32, 57, 67, 73, 50, 36, 100, 52, 64, 31, 22,
	50, 131, 48, 55, 48, 45, 19, 80, 35, 63, 60, 48, 59, 37, 58, 70, 33, 66, 38, 76, 56, 37, 58,
	77, 91, 28, 65, 34, 39, 34, 49, 54, 69, 34, 77, 111, 22, 28, 51, 41, 44, 76, 60, 74, 79, 44,
	38, 28, 86, 44, 40, 45, 65, 39, 56, 39, 48, 17, 46, 29, 82, 52, 65, 91, 95, 34, 35, 122, 11,
	49, 67, 56, 42, 23, 48, 45, 39, 53, 71, 52, 35, 52, 29, 33, 40, 67, 43, 78, 53, 84, 67, 70, 19,
	60, 36, 63, 90, 40, 45, 25, 83, 74, 60, 36, 45, 70, 65, 67, 116, 192, 81, 65, 26, 14, 108, 55,
	48, 60, 36, 24, 44, 62, 69, 67, 69, 42, 67, 33, 94, 43, 52, 44, 28, 89, 68, 49, 61, 46, 48,
	122, 29, 19, 72, 35, 65, 65, 50, 34, 55, 20, 44, 39, 72, 50, 67, 14, 29, 33, 101, 23, 38, 39,
	72, 33, 67, 164, 64, 86, 51, 25, 89, 62, 106, 101, 48, 124, 51, 70, 55, 58, 49, 46, 39, 31, 49,
	79, 33, 47, 45, 31, 92, 44, 49, 19, 63, 31, 34, 33, 59, 60, 24, 39, 88, 46, 35, 37, 36, 88, 60,
	57, 57, 70, 13, 54, 31, 83, 44, 95, 53, 49, 105, 40, 49, 87, 33, 50, 89, 17, 94, 58, 76, 32,
	52, 39, 38, 85, 119, 25, 91, 54, 42, 63, 96, 89, 39, 37, 24, 97, 52, 86, 35, 30, 86, 37, 45,
	47, 125, 41, 72, 31, 70, 87, 54, 54, 86, 33, 74, 41, 110, 64, 42, 109, 54, 104, 46, 24, 101,
	67, 61, 62, 82, 72, 117, 32, 59, 46, 60, 20, 46, 22, 27, 39, 61, 57, 65, 33, 94, 76, 109, 58,
	123, 33, 94, 74, 29, 41, 29, 28, 60, 30, 98, 45, 45, 32, 62, 43, 43, 42, 77, 31, 55, 53, 88,
	21, 68, 24, 75, 87, 66, 33, 77, 51, 19, 23, 28, 49, 54, 41, 83, 72, 29, 17, 57, 64, 72, 21, 36,
	43, 49, 64, 39, 37, 105, 74, 99, 25, 83, 27, 47, 29, 127, 41, 57, 78, 37, 58, 41, 75, 53, 29,
	58, 62, 76, 44, 49, 42, 20, 51, 102, 80, 41, 76, 44, 116, 95, 51, 51, 46, 115, 43, 75, 33, 49,
	62, 54, 50, 49, 55, 61, 27, 80, 37, 99, 68, 27, 64, 54, 84, 72, 69, 29, 50, 68, 67, 36, 43, 44,
	56, 41, 36, 39, 38, 130, 59, 39, 55, 51, 122, 63, 27, 73, 84, 24, 69, 72, 82, 56, 25, 68, 47,
	88, 80, 33, 51, 81, 50, 44, 49, 29, 26, 31, 39, 84, 30, 33, 76, 41, 35, 64, 72, 118, 38, 50,
	21, 52, 69, 94, 75, 61, 32, 50, 86, 21, 41, 52, 43, 25, 41, 64, 57, 46, 19, 65, 28, 45, 64, 46,
	35, 38, 36, 55, 43, 44, 14, 34, 55, 72, 43, 45, 27, 46, 27, 42, 90, 48, 41, 95, 71, 137, 28,
	30, 88, 127, 112, 89, 33, 61, 34, 63, 20, 52, 48, 45, 42, 95, 66, 36, 51, 37, 81, 24, 34, 99,
	38, 49, 43, 49, 65, 105, 36, 19, 35, 36, 61, 46, 91, 19, 38, 30, 138, 63, 68, 33, 46, 70, 89,
	65, 86, 32, 56, 39, 59, 32, 115, 70, 45, 59, 49, 49, 37, 33, 31, 80, 25, 62, 95, 87, 33, 39,
	41, 43, 49, 53, 66, 43, 135, 60, 34, 50, 40, 57, 74, 53, 76, 28, 32, 42, 88, 42, 44, 105, 75,
	44, 62, 101, 76, 48, 61, 45, 66, 48, 43, 40, 45, 54, 54, 55, 62, 54, 71, 170, 70, 56, 54, 57,
	28, 49, 49, 124, 25, 16, 42, 37, 54, 42, 51, 46, 141, 128, 70, 87, 56, 73, 43, 49, 45, 60, 59,
	18, 42, 40, 60, 76, 36, 44, 45, 42, 40, 101, 95, 45, 44, 47, 152, 60, 74, 60, 125, 69, 52, 53,
	68, 47, 51, 28, 62, 20, 46, 47, 42, 114, 58, 49, 76, 34, 72, 42, 57, 27, 61, 74, 21, 76, 49,
	43, 35, 69, 65, 25, 33, 177, 59, 33, 55, 42, 13, 51, 50, 19, 81, 64, 42, 57, 23, 74, 43, 74,
	48, 97, 43, 34, 95, 66, 63, 54, 39, 52, 95, 80, 62, 36, 93, 55, 47, 117, 64, 17, 16, 94, 57,
	47, 35, 73, 59, 51, 90, 53, 52, 25, 28, 34, 27, 54, 50, 23, 67, 66, 84, 52, 85, 25, 57, 44, 74,
	40, 52, 95, 107, 90, 42, 34, 17, 31, 103, 31, 30, 50, 60, 50, 19, 97, 24, 79, 32, 49, 38, 75,
	59, 86, 52, 40, 50, 49, 82, 55, 70, 39, 99, 79, 42, 52, 124, 81, 21, 21, 33, 27, 21, 98, 71,
	51, 120,
];
